#ifndef PROGRAM_H
#define PROGRAM_H
#include <QString>
#include <QMap>
#include <memory>
#include "mainwindow.h"
#include "Configure.h"

class Program
{
public:
    // 资源目录
    static QString MediaDirectory;

    // 当前工作项目文件(.avatarproj)
    static QString WorkingSpace;

    // 项目配置
    static Configure Config;

    // 光源参数
    static class EntityLight LightParam;

    // 相机参数
    static class EntityCamera CameraParam;

    // 场景节点列表
    static QMap<QString, std::shared_ptr<class EntitySceneNode>> SceneNodeList;

    // 用户脚本数据
    static QList<QPair<QString, QString>> UserScript;

    // GUI脚本数据
    static QList<QPair<QString, QString>> GuiScript;

    // 渲染轨迹数据
    static QString LineTrack;

    // 主窗口
    static MainWindow* MainWin;

public:
    /**
     * @brief 加载项目
     */
    static void SetupProject();

    /**
     * @brief 加载场景，运行发布产物
     * @param scene
     */
    static void LoadScene(const QString& scene);
};

#endif // PROGRAM_H
